"""
AST (抽象语法树) 模块

定义MixVideo工作流的抽象语法树节点，用于表示和操作工作流结构。
"""

from .base import Ast, AstNode, AstContext
from .nodes import (
    # 基础节点
    Sequence,
    Parallel,
    Conditional,
    Loop,

    # 视频处理节点
    FfmpegSlice,
    ExtractMetadata,
    ScanDirectory,

    # AI分类节点
    GeminiClassify,

    # 输出节点
    OutputDraft,
    OrganizeFiles,
    GenerateReport,

    # 工具节点
    FileOperation,
    DataTransform,
)

from .serialization import AstEncoder, AstDecoder
from .validation import AstValidator

__all__ = [
    # 基础类
    "Ast",
    "AstNode",
    "AstVisitor",
    "AstContext",
    
    # 基础节点
    "Sequence",
    "Parallel",
    "Conditional",
    "Loop",

    # 视频处理节点
    "FfmpegSlice",
    "ExtractMetadata",
    "ScanDirectory",

    # AI分类节点
    "GeminiClassify",

    # 输出节点
    "OutputDraft",
    "OrganizeFiles",
    "GenerateReport",

    # 工具节点
    "FileOperation",
    "DataTransform",

    # 序列化
    "AstEncoder",
    "AstDecoder",

    # 验证
    "AstValidator",
]